import time
import threading

R = threading.Lock()


def sub():
    global num
    R.acquire()  # 加锁，保证同一时刻只有一个线程可以修改数据
    num -= 1
    R.release()  # 修改完成就可以解锁
    time.sleep(1)


num = 100  # 定义一个全局变量
l = []  # 定义一个空列表，用来存放所有的列表


def main():
    for i in range(100):  # for循环100次
        t = threading.Thread(target=sub)  # 每次循环开启一个线程
        t.start()  # 开启线程
        l.append(t)  # 将线程加入列表l
    for i in l:
        i.join()  # 这里加上join保证所有的线程结束后才运行下面的代码
    print(num)


if __name__ == '__main__':
    main()
